Most modern computer software employs a graphical user interface (“GUI”) to convey information to and receive commands from users. A graphical user interface relies on a variety of GUI objects or controls, including icons, toolbars, drop-down menus, text, dialog boxes, buttons, and the like. In such GUI systems, toolbars provide an effective way to display numerous computer commands or controls. Toolbars usually include buttons, which are arranged in one or more rows or columns. Each button is associated with a command, and is identified by an icon that represents or depicts that command. For example, the “print” command may be invoked by clicking on a button whose icon depicts a printer. Advantageously, a user can invoke commands on the toolbar by clicking once on the associated button. In addition to buttons, toolbars can also include other interactive controls, such as text boxes, combo boxes, etc. Some toolbars can be turned on or off, and can be oriented horizontally or vertically. Although most toolbars are visually attached to a window, some may float above a window. In some programs that employ toolbars, the toolbars can be modified by adding or deleting controls, or by changing the function associated with a control. This allows the user to customize a toolbar so that the toolbar provides convenient access to the commands that are most frequently used by the user. In addition, these programs support multiple toolbars that can be turned on and off, thereby providing the user with the option of viewing two or more toolbars simultaneously. In some conventional systems, the process of customizing or manipulating toolbars uses a dialog box that displays a list of commands available for the toolbar. The dialog box also can display a list of available toolbars that can be displayed for the application. The user can then customize the toolbar by selecting which controls the user wants displayed.
Now, a user typically interacts with a GUI by using a pointing device (e.g., a mouse) to position a pointer or cursor over an object and “clicking” on the object. For example, a drag and drop (“DAD”) operation may be initiated by selection from a toolbar or by selecting an object within a digital image. In a typical DAD operation, a pointing device is used to select an object (e.g. text, icons, graphical objects, etc.) under a cursor and then “drag” the selected object to a different location or orientation on a display screen. The user may then “drop” or release the object at a desired new location or orientation indicated by the position of the cursor. Selecting is usually a first step, generally initiated by holding down a button associated with the pointing device (e.g., a mouse button) and gesturing with the pointing device to indicate the bounds of the object to be selected (as in text selection), or simply by “clicking” on the object under the cursor (as in graphical image or icon selection). Selection is typically indicated by a change in the visual display of the selected object (e.g., by using reverse video, displaying a frame around the object, displaying selection handles around the object, etc.). Dragging is usually a separate step distinct from selection, and is usually initiated by clicking on a selected object and holding a control button down (e.g., holding a mouse button in a depressed state). The object is then dragged while holding the control button. However, in some applications, initiating dragging also selects the object under the cursor. The operation is completed by dropping the selected object.
For many applications, a drag operation may be used to initiate several possible functions relative to an object. For example, in a text application, a selected section of text may be moved or copied by a drag operation. Normally, if multiple functions are possible, one such function (e.g., moving) is a “default” function of a drag operation, while the other functions must be selected by some combination of modifiers (e.g., pressing keys like “SHIFT”, “ALT”, and “CTRL”) while operating the pointing device. In some applications, after completing the drag operation, a menu automatically pops up to allow a user to choose a specific “drop” function. In other applications, such as that described in U.S. Pat. No. 6,246,411 to Strauss, a user may select among multiple functions during a drag operation using a toolbar, thus allowing the user to change a gesture after it has begun.
One problem with present DAD methods such as that described by Strauss is that a user may have difficulty selecting the object to be dragged or the location where that object is to be a dropped. Thus, a user may have to repeat the DAD operation several times in order to achieve the desired result. In other words, while present DAD methods may provide a user with a desired image after several iterations, these methods do not provide for the accurate selection and positioning of the desired object at the outset. Thus, and especially for large image presentations such as digital maps, a user may have to repeat the DAD operation several times in order to accurately select or position the desired object. For example, while a user may use well-known “panning” and “zooming” tools to view a desired object in an original image in order to reposition that object, in doing so, the relative location of the new position for that object may be lost to the user or the user may find it difficult to determine what portion of the original image is being observed. Thus, while the user may have gained a detailed view of a region of the original image that is of interest, the user may lose sight of the context within which that region is positioned. This is an example of what is often referred to as a “screen real estate problem”.